package modelo;

public class Multiplexador2Entradas extends Thread{
	private int entrada1[] = new int[16];
	private int entrada2[] = new int[16];
	private int saida[] = new int[16];
	private int linhaDeControle= 0;
	private SMailbox canalEntrada1 = new SMailbox();
	private SMailbox canalEntrada2 = new SMailbox();
	private SMailbox canalSaida = new SMailbox();
	private SMailbox canalControle = new SMailbox();
	private int quantidadeDeMsgAEnviar;
	
	public Multiplexador2Entradas(SMailbox canalEntrada1, SMailbox canalEntrada2, SMailbox canalSaida, SMailbox canalControle, int quantSaida){
		this.canalEntrada1 = canalEntrada1;
		this.canalEntrada2 = canalEntrada2;
		this.canalSaida = canalSaida;
		this.canalControle = canalControle;
		this.quantidadeDeMsgAEnviar = quantSaida;
	}
	
	public void setEntrada1(int entrada1[]) {
		this.entrada1 = entrada1;
	}
	public void setEntrada2(int entrada2[]) {
		this.entrada2 = entrada2;
	}
	public int[] getSaida() {
		return saida;
	}
	public void setLinhaDeControle(int linhaDeControle) {
		this.linhaDeControle = linhaDeControle;
	}
	
	public void atualizacao(){
		if(linhaDeControle==0){	//caso seja 0
			saida=entrada1;
		}
		else{						//caso seja 1
			saida=entrada2;
		}
	}
	public void run(){
		entrada1 = (int[]) canalEntrada1.receive();
		entrada2 = (int[]) canalEntrada2.receive();
		linhaDeControle = (Integer) canalControle.receive();
		atualizacao();
		for(int i=0; i<quantidadeDeMsgAEnviar;i++){
			canalSaida.send(saida);
		}
    }

}
